<?php

/**
 * Classe de Exceção do Bando de Dados
 */
class GDbException extends Exception {

    private $arrMsg = array("1062" => "Registro duplicado", "1451" => "Este item possui dependência", "1452" => "Dependência não encontrada");

    public function __construct($message, $code) {
        parent::__construct($message, $code);
    }

    public function getError() {
        switch (SERVER) {
            case 'D':
                return '<div class="__erro"> Tipo: <b>DbException</b> <br>' .
                'Arquivo: <b>' . $this->file . '</b><br>' .
                'Linha: <b>' . $this->line . '</b> <br/>' .
                'Código: <b>' . $this->code . '</b><br>' .
                'Mensagem: <b><span style="color:red">' . $this->message . '</span></b><br/>' .
                'Erro: <b><span style="color:blue">' . $this->getMsg($this->code) . '</span></b><br/>' .
                'Caminho: <b>' . $this->getTraceAsString() . '</b></div>';
                break;
            case 'H':
                return $this->code . ' - ' . $this->getMsg($this->code);
                break;
            case 'P':
            default:
                return $this->getMsg($this->code);
                break;
        }
    }

    private function getMsg($code) {
        if ($this->arrMsg[$code] == '')
            $erro = "Ops! Ocorreu um erro inesperado, desculpe o transtorno.";
        else
            $erro = $this->arrMsg[$code];
        return $erro;
    }

}

?>
